package gov.nhso.prov.acc.core;

import gov.nhso.prov.acc.utils.DigitUtil;

import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;

import com.isud.core.ISUD;
import com.isud.core.ISUDFactory;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;

@SuppressWarnings("rawtypes")
public class WriteFile {
	String str1 = "";
	  private static String FILE = "C:\\Users\\scapSolution\\Desktop\\FirstPdf.pdf";
	public static void main(String[] args) {
		Connection conn = null;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.201.10:1549:DEVDB", "PROVACC_OWNER", "3&9CB2&060");

			File fontFile = new File("THSarabun.ttf");
		    Paragraph preface = new Paragraph();
			
			 Document document = new Document();
			    PdfWriter.getInstance(document, new FileOutputStream(FILE));
			    Paragraph paragraph = new Paragraph();
			    document.setMargins(65, 50, 130, 0);
			    document.open();
			    BaseFont baseFont = null;
				baseFont = BaseFont.createFont(fontFile.toString() , BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
			    Font font = new Font(baseFont, 16);
			    Font headFont = new Font(baseFont, 18);
			    String ws = "\u00a0\u00a0";
			    String tab = ws+ws+ws+ws;
			    
			    Image krut = Image.getInstance("krut.jpeg");
			    krut.setAbsolutePosition(250f, 720f);
			    krut.scaleAbsolute(90f, 90f);
			    document.add(krut);
			    paragraph.setFont(font);
			    paragraph.add("ที่");
			    paragraph.add(ws+tab+tab+tab+tab+tab+tab+tab+tab+ws+ws+ws);
			    paragraph.add("สำนักงานสาธารณสุขจังหวัด"+ws);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(ws+ws+tab+tab+tab+tab+tab+tab+tab+tab+ws+ws+ws);
			    paragraph.add("วันที่");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เรื่อง"+ws+ws+"แจ้งโอนเงิน");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เรียน"+ws+ws+"ผู้จัดการธนาคารเพื่อการเกษตรและสหกรณ์การเกษตร สาขา");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("สิ่งที่ส่งมาด้วย"+ws+"รายละเอียดประกอบการโอนเงิน");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(tab+tab);
			    paragraph.add("ด้วยสำนักงานสาธารณสุขจังหวัด ");
			    paragraph.add(ws+"มีความประสงค์จะโอนเงินเข้าบัญชีให้กับหน่วยบริการ/คู่สัญญา จำนวน"+ws);
			    paragraph.add(ws+"หน่วย "+tab+" จำนวนเงิน "+ws+""+ws+ws+"บาท"+ws+"(");
			    paragraph.add(ws+")โดย");
			    paragraph.add("ตัดจ่ายจากบัญชี\"เงินกองทุนหลักประกันสุขภาพแห่งชาติ สาขาจังหวัด"+ws);
			    paragraph.add("\""+ws+"(บัญชี 6)"+ws+ws+"เลขที่บัญชี"+ws);
			    paragraph.add(ws+"รายละเอียดตามเอกสารที่ส่งมาพร้อมนี้");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(tab+tab);
			    paragraph.add("จึงเรียนมาเพื่อโปรดพิจารณาและดำเนินการต่อไปด้วย จะเป็นพระคุณ");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(ws+ws+tab+tab+tab+tab+tab+tab+tab+tab+ws+ws+ws);
			    paragraph.add("ขอแสดงความนับถือ");
			   /* Image krut = Image.getInstance("krut.jpeg");
			    krut.setAbsolutePosition(67f, 720f);
			    krut.scaleAbsolute(48f, 48f);
			    document.add(krut);
			    paragraph.setFont(headFont);
			    paragraph.add(tab+tab+tab+tab+tab+tab+ws+ws);
			    paragraph.add("บันทึกข้อความ");
			    paragraph.setFont(font);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("ส่วนราชการ "+ws+ws+ws+tab+tab+tab+tab);
			    paragraph.add("สำนักงานสาธารณสุขจังหวัด "+ws);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("ที่");
			    paragraph.add(tab+tab+tab+tab+tab+ws+ws+ws+ws+ws+ws);
			    paragraph.add("วันที่");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เรื่อง   	ขออนุมัติโอนเงินงบ");
			    paragraph.add( "ปีงบประมาณ ");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("_________________________________________________________________________________");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เรียน  	นายแพทย์สาธารณสุขจังหวัด");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("สิ่งที่ส่งมาด้วย	ข้อมูลรายละเอียดการโอนเงินให้หน่วยบริการ/คู่สัญญา");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(tab+tab);
			    paragraph.add("ด้วยสำนักงานหลักประกันสุขภาพแห่งชาติได้จัดสรรเงินและโอนเงินกองทุนงบ");
			    paragraph.add("ปีงบประมาณ");
			    paragraph.add("ให้สาธารณสุขจังหวัด");
			    paragraph.add("จ่ายเป็นเงินสนับสนุนและส่งเสริมการจัดบริการสาธารณสุขของหน่วยบริการ รวมทั้งการพัฒนาระบบบริการและบุคลากร โดยมีเงินกองทุนงบ");
			    paragraph.add("คงเหลือ ณ วันที ");
			    paragraph.add("ป็นจำนวนเงิน บาท");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(tab+tab);
			    paragraph.add("กลุ่มงาน");
			    paragraph.add(tab+tab+tab+tab);
			    paragraph.add("ขอโอนเงินกองทุนงบ");
			    paragraph.add("จากบัญชี \"เงินกองทุนหลักประกันสุขภาพแห่งชาติ สาขาจังหวัด ");
			    paragraph.add("\"(บัญชี 6)  เลขที่บัญชี ");
			    paragraph.add("ให้หน่วยบริการ/คู่สัญญา ตามสิ่งที่ส่งมาด้วยเป็นจำนวนเงิน ");
			    paragraph.add("บาท()");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(tab+tab);
			    paragraph.add("จึงเรียนมาเพื่อโปรดพิจารณาลงนามอนุมัติ");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("สถานะการเงิน ณ วันที่ ");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เงินบัญชี 6 สสจ. ");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เงินในบัญชี (1) บาท");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เบิกจ่าย " + "บาท (วันนี้)");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เบิกจ่าย " + "บาท (วันนี้)");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("เบิกจ่ายสะสม (2) "+ "บาท (วันนี้)");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add("คงเหลือ (3)=(1)-(2) "+ "บาท");
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(Chunk.NEWLINE);
			    paragraph.add(tab+tab+tab+ws+ws);
			    paragraph.add("ตรวจสอบถูกต้อง");*/
			    
				preface.add(paragraph);
				document.add(preface);
			    document.newPage();
			    document.close();
			    System.out.println("Created!");
			    
			/*ISUD isud = ISUDFactory.create(conn);
			conn.setAutoCommit(false);
			String sql = "SELECT * FROM ACC6_TRANSACTION";
			List list = null;
			DigitUtil digit = new DigitUtil();
			int i=0;
			//list = isud.selectList(sql);
			WriteFile writeFile = new WriteFile();
			FileWriter fstream = new FileWriter("C:\\Users\\scapSolution\\Desktop\\"+20121119+".txt");
			BufferedWriter out = new BufferedWriter(fstream);
			//HEADER RECORD
			out.write(writeFile.fulFill("0",1));
			out.write(writeFile.fulFill("000001",6));
			out.write(writeFile.fulFill("สนง.หลักประกันสุขภาพแห่งชาติ",30));
			out.write(writeFile.fulFill("สำนักงานหลักประกันสุขภาพแห่งชาติ",40));
			out.write(writeFile.fulFill("11992000026",16));
			out.write(writeFile.fulFill("20121119",8));
			out.write(writeFile.fulFill(" ",171));
			out.write(writeFile.fulFill("100",3));
			out.write(writeFile.fulFill(" ",125));
			out.write("\r\n");
			//DETAIL RECORDS
			for(i=0;i<10;i++){
				out.write(writeFile.fulFill("1",1));
				out.write(writeFile.fulFill(digit.numberFormat("000000", String.valueOf(i+2)),6));
				out.write(writeFile.fulFill("20121119",8));
				out.write(writeFile.fulFill("035",3));
				out.write(writeFile.fulFill(" ",4));
				out.write(writeFile.fulFill("0",16));
				out.write(writeFile.fulFill("D",1));
				out.write(writeFile.fulFill("0",12));
				out.write(writeFile.fulFill("C",1));
				out.write(writeFile.fulFill("0",7));
				out.write(writeFile.fulFill("0",7));
				out.write(writeFile.fulFill("0",7));
				out.write(writeFile.fulFill("0",12));
				out.write(writeFile.fulFill("??",2));
				out.write(writeFile.fulFill("0",40));
				out.write(writeFile.fulFill("0",60));
				out.write(writeFile.fulFill("0",40));
				out.write(writeFile.fulFill("0",60));
				out.write(writeFile.fulFill("0",81));
				out.write(writeFile.fulFill("0",32));
				out.write("\r\n");
			}
			//TOTAL RECORD
			out.write(writeFile.fulFill("2",1));
			out.write(writeFile.fulFill(digit.numberFormat("000000", String.valueOf(i+2)),6));
			out.write(writeFile.fulFill("0",8));
			out.write(writeFile.fulFill("0",15));
			out.write(writeFile.fulFill("0",242));
			out.write(writeFile.fulFill("0",128));*/
			
			conn.commit();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public String fulFill(String str, int maxLength){
		StringBuffer bufferStr = new StringBuffer();
		String result = "";
		int i=0;
		bufferStr.append(str);
		if(str.length() < maxLength){
			for(i = str.length();i<maxLength;i++){
				bufferStr.append(" ");
			}
		}
		result = bufferStr.toString();
		return result;
	}

	 private static void addEmptyLine(Paragraph paragraph, int number) {
		    for (int i = 0; i < number; i++) {
		      paragraph.add(new Paragraph(" "));
		    }
		  }
}
